import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 国名
mark = ['America', 'China', 'India', 'Laos', 'Saudi', 'Russia', 'Japan', 'South Korea', 'Britain', 'Germany', 'France']
# 各国总军费比例
percent = [0.5548467, 0.14444868, 0.05094268, 'NaN', 0.04846696, 0.046753, 0.04418206, 'NaN', 0.04161112, 0.03799276, 0.03075605]
# 将数据拼接成字典
dict = {mark[i]: percent[i] for i in range(len(mark))}

# 将字典转换为数组
df = pd.Series(dict)
# 删除空值
df = df.replace("NaN", np.nan)
df = df.dropna()

# 设置画布大小，清晰度
plt.figure(figsize=(10, 10), dpi=80)

patches,l_text,p_text = plt.pie(
	# 百分比
    df.values,
    # 名称
	labels=df.index,
    # 突出块，突出比例
	explode=(0, 0.1, 0, 0, 0, 0, 0, 0.1, 0),
	autopct='%1.1f%%',
    # 饼图起始的角度
	startangle=-110,
)

# 设置图标题，字体颜色，字体大小
plt.title("各国军费比例饼图", color='g', size=20)

# 添加图例，loc表示图例位置，bbox_to_anchor表示图例距画布的边距（外边距，上边，右边）， ncol分为几列，borderaxespad图例内边距
plt.legend(['美国', '中国', '印度', '沙特', '俄罗斯', '日本', '英国', '德国', '法国'], loc='upper right', fontsize=10, bbox_to_anchor=(1, 1), ncol=2, borderaxespad=0.1)

plt.axis("equal")

# 设置字体大小
for t in l_text:
	t.set_size(15)
for t in p_text:
	t.set_size(15)


plt.show()